<?php

namespace app\official\controller;

//引入微信扩展类

use mikkle\tp_wechat\Wechat;

use mikkle\tp_wechat\WechatApi;

use \think\View;

//让当前的控制器来继承微信的接口类

class Index extends WechatApi
 {

    //创建一个配置

    protected $options = [

        'token'=>'ASK12',

        'appid'=>'wx365bca0655d93b6d',

        'appsecret'=>'29badac157fbbd5f08f294125f5dd993',

        'encodingaeskey'=>'',

    ];

    //网站第一次匹配 true 1为匹配 第二次就改为false

    protected $valid = true;

    //是否开启钩子

    protected $isHook = false;

    public function __construct()
 {

        parent::__construct();

        $this->view = new View();

        $this->request = request();

    }

    //服务器对接的方法

    public function auth()
 {

        //调用父类的index方法 里面就有签名验证的过程

        $this->index();

        //首次关注回复信息

        $subscribe = $this->returnEventSubscribe();

        //weObj 内部对象

        //text 设置要发送的文本

        //reply  发送信息给微信服务器

        $this->weObj->text( $subscribe )->reply();

        //调用关键词回复的方法

        $this->returnMessageText();

        //调用地理位置信息

        $this->returnMessageLocation();

    }

    //创建自定义菜单的方法

    public function menu()
 {
        //封装微信的自定义菜单，将封装好的菜单的数据 发送给微信，让微信接收到菜单数据后，对我们公众号来进行设置
        $data = [
            'button' =>[
                //第一个按钮
                [
                    'type' => 'view',
                    'name' => 'ask论坛',
                    'url' =>'http://124.223.71.93:2333'
                ],
                //第二个按钮
                [

                    'name' => '美食app推荐',
                    'sub_button' => [
                        [
                            'type' =>'view',
                            'name' => '美团',
                            'url' => 'http://i.meituan.com/'
                        ],
                        [
                            'type' => 'view',
                            'name' => '饿了吗',
                            'url' => 'https://www.ele.me/'
                        ],
                        [
                            'type' => 'click',
                            'name' => '点赞',
                            'key' => '点赞一下'
                        ]
                    ]
                ],
                //第三个按钮
                [
                    'name' => '二维码扫描',
                    'sub_button' => [
                        [
                            'type' => 'scancode_waitmsg',
                            'name' => '扫码推事件',
                            'key' => 'rselfmenu_0_1'
                        ],
                        [
                            'type' => 'pic_sysphoto',
                            'name' => '系统拍照图',
                            'key' => 'rselfmenu_1_0'
                        ]
                    ]
                ]
            ]
        ];

        //将php数组转换为json 然后中文 不转码
        $json = json_encode( $data, JSON_UNESCAPED_UNICODE );

        // 将菜单数据发送给微信的服务器，让公众号生成自定义菜单
        $result = Wechat::Menu()-> createMenu( $json );

        if ( $result )
 {
            echo '自定义菜单创建成功';
        } else {
            echo '自定义菜单创建失败';
        }
    }

    //发送模板消息的方法

    public function send()
 {
        if ( $this->request->isPost() ) 
 {
            $params = $this->request->param();

            $createtime = date( 'Y年m月d日 H:i:s', time() );

            $data = [
                'touser' => $params[ 'touser' ],
                'template_id' => 'Q1mMHoLqtAjhyz7Stfx6btbbFMmWjGdNRIEs7UvhMkY',
                'url' => 'http://124.223.71.93:2333',
                'topcolor' => '#FF0000',
                'data' => [
                    'first' => [
                        'value' => '购买成功！',
                        'color' => '#173177'
                    ],
                    'code' => [
                        'value' => $params[ 'code' ],
                        'color' => '#173177'
                    ],
                    'name' => [
                        'value' => $params[ 'name' ],
                        'color' => '#173177'
                    ],
                    'createtime' => [
                        'value' => $createtime,
                        'color' => '#173177'
                    ],
                    'content' => [
                        'value' => $params[ 'content' ],
                        'color' => '#173177'
                    ]
                ]
            ];

            // 数组转成json数据
            $json = json_encode( $data, JSON_UNESCAPED_UNICODE );

            $res = Wechat::message()->sendTemplateMessage( $json );

            if ( $res ) {
                echo '发送成功';
            } else {
                echo '发送失败';
            }
        }

        return $this->view->fetch();
    }

}

